home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / programming / other / wild / appunti / fileformat.txt < prev    next >
Text File  |  1999-05-25  |  2KB  |  85 lines

  1. DESIGN DEL FORMATO FILES DI WILD.
  2.  
  3. Intanto: WILD carica delle Scenes, con dentro tutto l'occorrente.
  4. Poi: il primo formato che uso (forse anche l'unico) sarà un tipo simile all'IFF.
  5.  
  6. Ci dovrà essere un chunk che definisce la struttura della scene,
  7. e poi tutti chunks descriveranno il resto.
  8.  
  9. Dovrà essere splittabile in più files.
  10.  
  11. Mi serve un concetto di chunks figli.
  12.  
  13. esempio:
  14. ROOT
  15.     SCENE
  16.         ARENA
  17.             ALIEN
  18.                 SECTOR
  19.                     NEBULA
  20.                     WIRE
  21.                     SHELL
  22.                 SECTOR    
  23.                     NEBULA
  24.                     WIRE
  25.                     SHELL
  26.             ALIEN
  27.                 SECTOR
  28.                     ...
  29.         ARENA
  30.             ...
  31. EOF
  32.  
  33. Struttura Chunk:
  34.  
  35.     KEY.l
  36.     SIZE.l    (including childs, so ROOT will have size=FILESIZE-chunkheader)
  37.     DATA.l    (size of data in the chunky before the first child chunk)
  38.     CHILDS.l (number of childs of this chunk)
  39.  
  40. Chunks: (indicated by keys)
  41.  
  42. WILD    The header chunk, also file identifier
  43.  
  44. LINK    Special chunk !!!
  45.     In the data you will have a relative filename.
  46.     It will be inserted here like if it was a single file.
  47.     
  48. Nuovi concetti, 28/4/1999, un sacco di tempo dopo...
  49.  
  50. Serve un formato molto più veloce del wabl (in loading soprattutto) e binario.
  51.  
  52. Control header:
  53. - dc.w    command
  54.  
  55. Commands:
  56. NEW_BROTHEROBJECT
  57. NEW_CHILDOBJECT
  58.  
  59. Object header:
  60. - dc.l    ObjectType
  61. - dc.l    ObjectID
  62.  
  63. (objectType = 0 is EOF)
  64.  
  65. Then, must be the attributes (NOT friends, just attributes, simple & complex).
  66. - dc.l    AttributeID
  67. - dc.l    AttributePTR    (offset into the DATA bank)
  68. - dc.l    AttributeLEN    (len into the DATA bank)
  69.  
  70. (attributeID = 0 is end of attributes)
  71. The ending attribute is only a 0, not (0,0,0) !
  72.  
  73. Then, must be the friends.
  74. - dc.l    FriendID
  75. - dc.l    FriendPTR    (offset from there (the longword next to this) to object referred)
  76.  
  77. code to extract a friend: *a0=friend
  78.  
  79. move.l    (a0)+,d0    ; d0=FriendID
  80. movea.l    (a0)+,a1
  81. adda.l    a0,a1        ; a1=FriendPTR
  82.     
  83. Dovrebbe anche supportare XPK.
  84. Il loader si può scrivere in asm, ma in saver in c...
  85.